package com.chenfan.process.biz;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.chenfan.process.entity.dto.FormDTO;
import com.chenfan.process.entity.dto.FormQueryDTO;
import com.chenfan.process.entity.po.ProcessForm;
import com.chenfan.process.entity.validator.ProcessFormVO;

/**
 * @author liuming
 * @date 2021/11/24
 */
public interface ApprovalFormBiz {
    /**
     * 保存表单
     *
     * @param form
     *            表单
     * @return {@link Object}
     */
    Long saveForm(FormDTO form);

    /**
     * 更新表单
     *
     * @param form
     *            表单
     * @return {@link Long}
     */
    Long updateForm(FormDTO form);

    /**
     * 更新状态
     *
     * @param formId
     *            表单id
     * @param code
     *            状态
     */
    void changeStatus(Long formId, Integer code);

    /**
     * 表单详情
     *
     * @param formId
     *            表单id
     * @return {@link ProcessFormVO}
     */
    ProcessFormVO formDetail(Long formId);

    /**
     * 分页查询
     *
     * @param pageNum
     *            页面num
     * @param pageSize
     *            页面大小
     * @param form
     *            表单
     * @return {@link Page}<{@link ProcessForm}>
     */
    Page<ProcessForm> page(Integer pageNum, Integer pageSize, FormQueryDTO form);

    void removeForm(Long formId);

}
